------------------------------------------------
--- Big-step SOS: Adding input/output to IMP ---
------------------------------------------------

Suggested steps to follow in order to extend the oringinal big-step SOS
of IMP in Maude to include the read and print language constructs:

1) Modify imp-bigstep.maude: Include buffer.maude at the begining,
   add the input buffer to all configurations, and add Maude commands
   for executing the new programs at the end.

2) Run imp-bigstep.maude: Everything working before should still work;
   the new programs should remain unreduced (big-step SOS either reduces a
   program all the way through, or it does not reduce it at all).

3) Modify imp-semantics-bigstep.maude:
   a) Include module BUFFER in module IMP-CONFIGURATIONS-BIGSTEP.
   b) Add an input buffer to all configurations holding expressions,
      an input buffer to non-result configurations holding statements,
	  and both an input buffer and an output buffer to result state configuration.
   c) Modify all the existing big-step SOS rules to work with the new
      configurations, making sure the inputs are propagated correctly and the
	  outputs are collected properly.
   d) Change the rule for variable declarations to report both the remaining input
      and the output generated by evaluating the top-level statement.

4) Run imp-bigstep.maude: Everything working before should still work, and
   should include and empty output buffer in the result configurations;
   the new programs still stay unchanged.

6) Add the actual big-step SOS of read and print, each consisting of one rule.

7) Run imp-bigstep.maude and check that all programs evaluate properly.
   Notice that big-step SOS is not able to capture all the behaviors of the
   nondeterministic program (it only captures nondeterministic choice).


------------------------------
--- Observations, thoughts ---
------------------------------

1) All configurations had to change in order to also hold the input and/or output.

2) Consequently, all rules had to change, too.

3) It does not capture all the desired non-determinism, it only captures
   nondeterministic choice semantics.
